package com.ttxs.generator.vo;

import com.ttxs.generator.remote.RemoteContants;
import com.ttxs.generator.util.Constants;
import lombok.Data;
import lombok.ToString;

import java.util.ArrayList;
import java.util.List;

/**
 * 封装生成代码默认参数
 */
@ToString
@Data
public class DefaultFormBean implements Cloneable{
    /**
     * 默认输出路径根目录
     */
    public static final String ROOT_PATH = "/ttxs-code";
    private String author = "john.yi@qq.com";
    private String url;
    private String dbUsername = "root";
    private String dbPassword = "root";
    /**
     *  springCloudPackageName，生成多模块项目需要
     */
    private String springCloudPackageName;
    /**
     * 后端存储目录
     */
    private String javaProjectPath;
    /**
     * 前端存储目录
     */
    private String vueProjectPath;
    /**
     * 前端项目模板的路径
     */
    private String ttxsUiVuePath;
    /**
     * 管理平台网关地址
     */
    private String gatewayUrl = "http://localhost:7001";
    /**
     * 后端项目类型：springBoot/springCloud
     */
    private String javaProjectType;
    /**
     * 管理平台用户名
     */
    private String adminUsername = RemoteContants.DefaultValue.ADMIN_USER_NAME;
    /**
     * 管理平台密码
     */
    private String adminPassword = RemoteContants.DefaultValue.DEFAULT_PASSWORD;
    /**
     * artifactId，中划线连接，不能使用下划线
     * artifactId=IDE中的项目名字=微服务名字=maven的artifactId
     */
    private String artifactId;
    /**
     * 多模块项目artifactId列表
     */
    private List<String> artifactIdList = new ArrayList<>();
    /**
     * 微服务模块端口号
     */
    private String port;

    public boolean isSpringCloud() {
        return this.javaProjectType.equals(Constants.SPRING_CLOUD);
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
        DefaultFormBean defaultFormBean = (DefaultFormBean) super.clone();
        defaultFormBean.artifactIdList = (List<String>) ((ArrayList)artifactIdList).clone();
        return defaultFormBean;
    }

}
